<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8" />
  <title>1</title>
</head>

<body>

</body>

</html>
<script>
  // const routes = [
  //   {
  //     name: 'TradeMark',
  //     children: [
  //       {
  //         name: 'A'
  //       },
  //       {
  //         name: 'B'
  //       }
  //     ]
  //   }
  //   ,
  //   {
  //     nameL: 'Spu',
  //     children: [
  //       {
  //         name: 'C'
  //       },
  //       {
  //         name: 'D'
  //       }
  //     ]
  //   }
  // ];
  // const info = ['TradeMark', 'A', "Spu", 'D'];
  const routes = [ // 定义包含路由信息的数组
    {
      name: 'TradeMark', // 第一个路由对象，具有名称为 'TradeMark'
      children: [ // 子路由数组
        {
          name: 'A' // 子路由对象，名称为 'A'
        },
        {
          name: 'B' // 子路由对象，名称为 'B'
        }
      ]
    },
    {
      name: 'Spu', // 第二个路由对象，具有名称为 'Spu'
      children: [ // 子路由数组
        {
          name: 'C' // 子路由对象，名称为 'C'
        },
        {
          name: 'D' // 子路由对象，名称为 'D'
        }
      ]
    }
  ];
  function extractRoutesByName(routes, names, result = []) { // 定义提取指定路由名称的递归函数，参数为路由数组、名称数组和可选的结果数组
    routes.forEach(route => { // 遍历路由数组
      if (names.includes(route.name)) { // 如果当前路由名称在指定的名称数组中
        result.push(route.name); // 将当前路由名称添加到结果数组中
      }
      if (route.children) { // 如果当前路由有子路由
        extractRoutesByName(route.children, names, result); // 递归地提取子路由的名称
      }
    });
    return result; // 返回结果数组
  }
  const namesToExtract = ['TradeMark', 'A', 'Spu', 'D']; // 指定要提取的路由名称数组
  const extractedRoutes = extractRoutesByName(routes, namesToExtract); // 调用提取指定路由名称的函数
  console.log(extractedRoutes); // 输出提取的路由名称数组
  // function factorial(n) {
  //   // 基本情况
  //   if (n === 0) {
  //     return 1;
  //   }
  //   // 递归情况
  //   else {
  //     return n * factorial(n - 1);
  //   }
  // }
  // // 测试阶乘函数
  // console.log(factorial(5)); // 输出 120
</script>